home *** CD-ROM | disk | FTP | other *** search
/ PC World Komputer 2010 April / PCWorld0410.iso / pluginy Firefox / 8352 / 8352.xpi / chrome / greasefire.jar / content / prefs.js < prev    next >
Text File  |  2009-01-06  |  3KB  |  136 lines

  1. /*
  2.  * Copyright (C) 2008 by Steve Krulewitz <skrulx@gmail.com>
  3.  * Licensed under GPLv2 or later, see file LICENSE in the xpi for details.
  4.  */
  5. const Cc = Components.classes;
  6. const Ci = Components.interfaces;
  7. const Cr = Components.results;
  8.  
  9. function $(id) {
  10.   return document.getElementById(id);
  11. }
  12.  
  13. var PrefsController = {
  14.  
  15.   _gfs: null,
  16.   _up: null,
  17.  
  18.   init: function PrefsController_init() {
  19.     this._gfs = Cc["@skrul.com/greasefire/service;1"]
  20.                   .getService(Ci.gfIGreasefireService);
  21.     this._up = Cc["@skrul.com/greasefire/updater;1"]
  22.                  .getService(Ci.gfIUpdaterService);
  23.  
  24.     $("days").value = this._up.updateIntervalMinutes / (24 * 60);
  25.  
  26.     this._up.addListener(this);
  27.     this._updateDisplay();
  28.   },
  29.  
  30.   unload: function () {
  31.     this._up.removeListener(this);
  32.   },
  33.  
  34.   update: function() {
  35.     if (this._up.isUpdating) {
  36.       this._up.cancelUpdate();
  37.     }
  38.     else {
  39.       this._up.startUpdate(false);
  40.     }
  41.   },
  42.  
  43.   updateInterval: function (aDays) {
  44.     var d = parseInt(aDays);
  45.     if (!isNaN(d) && d >= 0) {
  46.       this._up.updateIntervalMinutes = d * 60 * 24;
  47.     }
  48.     this._updateDisplay();
  49.   },
  50.  
  51.   updateCheckbox: function (aChecked) {
  52.     if (aChecked) {
  53.       var d = $("days").value;
  54.       if (d == 0) {
  55.         d = 1;
  56.         $("days").value = 1;
  57.       }
  58.       this.updateInterval(d);
  59.     }
  60.     else {
  61.       this._up.updateIntervalMinutes = 0;
  62.     }
  63.     this._updateDisplay();
  64.   },
  65.  
  66.   onUpdateStarted: function () {
  67.     $("status").value = "Connecting..."
  68.     this._updateDisplay();
  69.   },
  70.  
  71.   onUpdateFinished: function (aStatus, aMessage) {
  72.  
  73.     if (aStatus == Cr.NS_OK) {
  74.       $("status").value = "Update complete!";
  75.     }
  76.     else if (aStatus == Cr.NS_BINDING_ABORTED) {
  77.       $("status").value = "Update cancelled";
  78.       $("progress").value = 0;
  79.     }
  80.     else if (aStatus == Cr.NS_ERROR_FILE_ALREADY_EXISTS) {
  81.       $("status").value = "Already up to date.";
  82.       $("progress").value = 0;
  83.     }
  84.     else {
  85.       $("status").value = "Error updating: " + aMessage;
  86.     }
  87.  
  88.     this._updateDisplay();
  89.   },
  90.  
  91.   onDownloadProgress: function (aCurrentBytes, aTotalBytes) {
  92.     $("progress").value = (aCurrentBytes / aTotalBytes) * 100;
  93.  
  94.     if (aCurrentBytes == aTotalBytes) {
  95.       $("status").value = "Extracting new index...";
  96.     }
  97.     else {
  98.       $("status").value = "Downloading " + aCurrentBytes + " of " + aTotalBytes + " bytes";
  99.     }
  100.   },
  101.  
  102.   _updateDisplay: function () {
  103.     $("index-date").value = (new Date(this._gfs.indexDate)).toLocaleString();
  104.     $("script-count").value = this._gfs.scriptCount;
  105.  
  106.     if (this._up.updateIntervalMinutes > 0) {
  107.       $("next-update").value = (new Date(this._up.nextUpdateDate)).toLocaleString();
  108.       $("auto").checked = true;
  109.     }
  110.     else {
  111.       $("next-update").value = "n/a";
  112.       $("auto").checked = false;
  113.     }
  114.  
  115.     if (this._up.isUpdating) {
  116.       $("update-button").label = "Cancel update";
  117.       $("progress-box").hidden = false;
  118.       $("throbber").hidden = false;
  119.     }
  120.     else {
  121.       $("update-button").label = "Update now";
  122.       $("throbber").hidden = true;
  123.     }
  124.   },
  125.  
  126.   QueryInterface: function (aIID) {
  127.     if (!aIID.equals(Ci.nsISupports) &&
  128.         !aIID.equals(Ci.gfIUpdateListener) &&
  129.         !aIID.equals(Ci.nsIDOMEventListener))
  130.       throw Components.results.NS_ERROR_NO_INTERFACE;
  131.  
  132.     return this;
  133.   }
  134.  
  135. }
  136.